Angular এর হায়ারার্কিক্যাল ডিপেন্ডেন্সি ইনজেকশন (HDI) একটি শক্তিশালী ডিজাইন প্যাটার্ন যা সার্ভিস ইনজেকশন ব্যবস্থাকে অনেক স্তরে (hierarchical levels) সম্প্রসারণ করে। এটি Angular এর ডিপেন্ডেন্সি ইনজেকশন (DI) সিস্টেমের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা অ্যাপ্লিকেশনের বিভিন্ন স্তরে (modules, components, services) ডিপেন্ডেন্সি ইনজেকশন নিয়ন্ত্রণ করতে সাহায্য করে। এর মাধ্যমে আপনি স্পেসিফিক স্তরে নির্দিষ্ট সার্ভিসের একটি নতুন ইন্সট্যান্স তৈরি করতে পারেন।
Angular-এর ডিপেন্ডেন্সি ইনজেকশন সিস্টেম একটি হায়ারার্কিক্যাল কাঠামোতে কাজ করে। এর মানে হলো, সার্ভিস ইনজেকশনের জন্য একটি হায়ারার্কি বা স্তর ভিত্তিক (level-based) মডেল রয়েছে যেখানে:
এই স্তরগুলির মধ্যে, কম্পোনেন্ট বা মডিউলে যেকোনো সার্ভিস ইনজেক্ট করা হলে, যদি সার্ভিসটি উচ্চতর স্তরে (অথবা রুট মডিউলে) ইনজেক্ট করা না থাকে, তবে এটি কম্পোনেন্ট বা মডিউলের নির্দিষ্ট স্তরে তার নিজস্ব ইন্সট্যান্স তৈরি করবে।
Angular একটি root injector এবং child injectors ব্যবহার করে:
এটি একটি ইনজেকশন হায়ারার্কি তৈরি করে, যেখানে সার্ভিসের ভিন্ন ভিন্ন স্তরের ইন্সট্যান্স তৈরি হয়, এবং এগুলি নির্দিষ্ট স্তরে লুকানো বা প্রদর্শিত হতে পারে।
ধরা যাক, আপনার একটি LoggerService
নামক সার্ভিস রয়েছে, যেটি অ্যাপের বিভিন্ন অংশে ব্যবহৃত হবে, এবং আপনি চাইছেন যে এই সার্ভিসের ইনস্ট্যান্সকে রুট, মডিউল, এবং কম্পোনেন্ট স্তরে কিভাবে কন্ট্রোল করবেন।
আপনি যদি সার্ভিসটিকে রুট স্তরে ইনজেক্ট করেন, তাহলে এটি অ্যাপ্লিকেশনের সব অংশে একক ইন্সট্যান্স হিসেবে ব্যবহৃত হবে।
@Injectable({
providedIn: 'root' // রুট স্তরে ইনজেক্ট করা হচ্ছে
})
export class LoggerService {
log(message: string) {
console.log(message);
}
}
যদি আপনি সার্ভিসটি একটি নির্দিষ্ট মডিউলে ইনজেক্ট করেন, তবে এটি শুধুমাত্র সেই মডিউলের কম্পোনেন্টগুলির জন্য ইনজেক্ট হবে।
@NgModule({
providers: [LoggerService] // মডিউল স্তরে সার্ভিস ইনজেক্ট করা
})
export class AppModule { }
কম্পোনেন্ট স্তরে সার্ভিস ইনজেক্ট করলে, সার্ভিসটি শুধুমাত্র ঐ কম্পোনেন্টের জন্য পৃথক ইন্সট্যান্স তৈরি করবে।
@Component({
selector: 'app-home',
providers: [LoggerService] // কম্পোনেন্ট স্তরে সার্ভিস ইনজেক্ট করা
})
export class HomeComponent {
constructor(private logger: LoggerService) {}
}
এখানে, LoggerService
কেবলমাত্র HomeComponent
এর মধ্যে ইনজেক্ট হবে এবং এটি অন্য কম্পোনেন্টে আলাদা ইন্সট্যান্স হবে।
Angular এর হায়ারার্কিক্যাল ডিপেন্ডেন্সি ইনজেকশন আপনাকে সার্ভিসের ইন্সট্যান্সের জীবনচক্র এবং স্কোপ কন্ট্রোল করতে দেয়, যা কোডের রক্ষণাবেক্ষণ এবং পুনঃব্যবহারযোগ্যতা বৃদ্ধি করে। এটি রুট, মডিউল এবং কম্পোনেন্ট স্তরে ইনজেকশন নিয়ন্ত্রণ করতে সহায়ক, এবং প্রয়োজনে একই সার্ভিসের ভিন্ন ভিন্ন ইন্সট্যান্স তৈরি করার সুবিধা দেয়।
Read more